package org.example.new_hbps_backend_reconstruction.service;

import com.baomidou.mybatisplus.extension.service.IService;
import org.example.new_hbps_backend_reconstruction.common.results.R;
import org.example.new_hbps_backend_reconstruction.entity.PatientDeviceEntity;
import org.example.new_hbps_backend_reconstruction.entity.request.PatientDeviceCallbackRequest.IPatientDeviceCallback;

/**
 * @author 丁利军
 * @date 2025年10月11日 15:36
 * @description TODO: 描述
 */
public interface PatientDeviceV2Service extends IService<PatientDeviceEntity> {
    R getByUid(long uid);

    Object addPatientDevice(long uid);

    R bindPatientDevice(String imei, long uid);

    R updatePatientDevice(long uid, int height, int weight);

    /**
     * 手表消息回调处理
     *
     * @return 心永方会忽略所有返回信息, 只对状态码敏感, 所以说不返回错误信息
     */
    R callback(String eventType, Long pddId, Integer timestamp,
               IPatientDeviceCallback eventData);

    R unbindPatientDevice(Long uid);

    Object generateUserAuthToken(Long uid);

     //String getAuthToken();
    /**
     * 根据deviceUid查询patientUid
     * @param deviceUid 设备唯一标识
     * @return 患者唯一标识
     */
    Long getPatientUidByDeviceUid(String deviceUid);

    /**
     * 根据deviceUid查询患者设备信息
     * @param deviceUid 设备唯一标识
     * @return 患者设备实体
     */
    PatientDeviceEntity getByDeviceUid(String deviceUid);

    /**
     * 根据deviceUid查询患者设备信息，如果不存在则抛出异常
     * @param deviceUid 设备唯一标识
     * @return 患者设备实体
     * @throws RuntimeException 设备不存在时抛出异常
     */
    PatientDeviceEntity getByDeviceUidOrThrow(String deviceUid);
}

